using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Models;

namespace DAL
{
	public static partial class LinkTypeService
	{
        public static bool AddLinkType(LinkType linkType)
		{
            string sql =
				"INSERT LinkType (Title)" +
				"VALUES (@Title)";
				
			sql += " ; SELECT @@IDENTITY";

            
			SqlParameter[] para = new SqlParameter[]
			{
				new SqlParameter("@Title", linkType.Title)
			};
			
            int i = DBHelper.ExecuteNonQuery(CommandType.Text, sql, para);
			if (i > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
            
		}
		
		
        public static bool DeleteLinkTypeByID(int iD)
		{
            string sql = "DELETE LinkType WHERE ID = @ID";

           	SqlParameter[] para = new SqlParameter[]
			{
				new SqlParameter("@ID", iD)
			};
		
            int i = DBHelper.ExecuteNonQuery(CommandType.Text, sql, para);
            if (i > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
            
		}
		
        public static bool ModifyLinkType(LinkType linkType)
        {
            string sql =
                "UPDATE LinkType " +
                "SET " +
	                "Title = @Title " +
                "WHERE ID = @ID";

			SqlParameter[] para = new SqlParameter[]
			{
				new SqlParameter("@ID", linkType.ID),
				new SqlParameter("@Title", linkType.Title)
			};

			int i = DBHelper.ExecuteNonQuery(CommandType.Text, sql, para);
            if (i > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }		

        public static IList<LinkType> GetAllLinkTypes()
        {
            string sqlAll = "SELECT * FROM LinkType";
			return GetLinkTypesBySql( sqlAll );
        }
		
        public static LinkType GetLinkTypeByID(int iD)
        {
            string sql = "SELECT * FROM LinkType WHERE ID = @ID";

            SqlParameter[] para = new SqlParameter[]
			{
				new SqlParameter("@ID", iD)
			};
			
            DataTable temp = DBHelper.ExecuteGetDataTable(CommandType.Text, sql, para);
			
			LinkType linkType = new LinkType();
			
            foreach (DataRow dr in temp.Rows)
            {
				linkType.ID = (int)dr["ID"];
				linkType.Title = (string)dr["Title"];
				
            }
            return linkType;    
            
        }
		
		
        private static IList<LinkType> GetLinkTypesBySql(string safeSql)
        {
            List<LinkType> list = new List<LinkType>();

			using (SqlDataReader dr = DBHelper.ExecuteGetReader(CommandType.Text, safeSql, null))
			{
				while (dr.Read())
				{
					LinkType linkType = new LinkType();
					
					linkType.ID = (int)dr["ID"];
					linkType.Title = (string)dr["Title"];
	
					list.Add(linkType);
				}
			}
            return list;
        }
		
        private static IList<LinkType> GetLinkTypesBySql(string safeSql, params SqlParameter[] para)
        {
            List<LinkType> list = new List<LinkType>();

			using (SqlDataReader dr = DBHelper.ExecuteGetReader(CommandType.Text, safeSql, para))
			{
				while (dr.Read())
				{
					LinkType linkType = new LinkType();
					
					linkType.ID = (int)dr["ID"];
					linkType.Title = (string)dr["Title"];
	
					list.Add(linkType);
				}
			}
            return list;
        }
	}
}
